Field of the Invention
The present application relates to maintaining a connection cache in an intermediate server. More particularly, the application relates to maintaining a connection cache in an intermediate server on the basis of statistics associated with monitored resource requests.
Description of the Related Technology
The term “proxy server” can be used to refer to a server that acts as an intermediary for requests received from a plurality of client devices and addressed to one or more remote servers. Typically, such requests are requests for resources (e.g. Web pages or multimedia files) or services which are stored at or accessed via the one or more remote servers. In this context, a remote server may be considered to be an endpoint in relation to a request for a network resource and is generally identified by a network address (e.g. an Internet Protocol (IP) or domain address) and a port number. For example, a proxy server may receive a Hypertext Transfer Protocol (HTTP) request over a Transmission Control Protocol (TCP) connection from a client device, and in turn open a new TCP connection to the endpoint identified in the HTTP request to thereby enable the HTTP request to be forwarded (i.e. proxied) to its destination.
Typically, the opening of a new TCP connection from the proxy server to the endpoint is achieved using a standard TCP three-way handshake mechanism (c.f. http://www.faqs.org/rfcs/rfc793.html section 2.7) and can be costly in terms of setup time. To illustrate, the round trip time (RTT) of a TCP packet sent between a proxy server and an endpoint can be several hundred milliseconds, and three round trips are required to establish a TCP connection. Moreover, in cases where a new TCP connection is opened for each HTTP transaction, data throughput rates may be initially low due to the use of congestion control strategies. For example, where “slow start” algorithms are employed, the congestion window size (i.e. the amount of data that may be in flight over the TCP connection) is initially small, which limits the throughput of the newly opened TCP connection.
In response to these problems, techniques for caching TCP connections have been proposed in the following documents, which are incorporated by reference herein: (i) A. Feldmann et al., “Performance of Web Proxy Caching in Heterogeneous Bandwidth Environments,” Proc. of the IEEE, INFOCOM '99 Conference (1999); and (ii) Lownsbrough et al., “System and method for efficiently forwarding client requests in a TCP/IP computing environment,” U.S. Pat. No. 7,480,711 B2, issued Jan. 20, 2009.